#ifndef SCATTEREDHIERARCHY_H
#define SCATTEREDHIERARCHY_H

#include "bga/system/TypeList.h"

namespace bga
{

template< typename List, template<typename> class Handler > class ScatteredHierarchy;

template< typename T1, typename T2, template<typename> class Handler >
struct ScatteredHierarchy< TypeList<T1, T2>, Handler > : public Handler<T1>,
                                                        public ScatteredHierarchy<T2, Handler>
{
};

template< typename T, template<typename> class Handler >
struct ScatteredHierarchy< TypeList<T, NullType>, Handler > : public Handler<T>
{
};

}

#endif // SCATTEREDHIERARCHY_H

